//
//  ViewController.m
//  内存布局
//
//  Created by FelixYin on 2020/4/11.
//  Copyright © 2020 FelixYin. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController


int a = 10;
int b;

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //全局变量a的地址值（0x10acdb570）跟静态变量g的地址值（0x10acdb574） 很接近，相差4个字节 4个字节存储a的值
    static int g = 30;
    NSLog(@"地址：%p ==== 地址：%p==== 地址：%p",&a,&b,&g);
    
    /*
     数据段：
     字符串常量 比如：NSString *str1 = @"1243";
     已初始化的数据：已初始化的全局变量，静态变量
     未初始化的数据：已初始化的全局变量，静态变量
     
     栈：
     函数调用开销 （地址是有高到低）
     比如局部变量，他们的地址会越来越小
     
     堆：
     通过alloc,malloc,calloc等动态分配的空间 （地址是有低到高 ）
     
     */
    
    //字符串常量
    NSString *str1 = @"1243";
    NSString *str2 = @"1243";
    NSLog(@"地址：%p ==== 地址：%p",str1,str2);
    
    
    //e的地址会高于f的地址
//    栈：
//    函数调用开销 （地址是有高到低）
//    比如局部变量，他们的地址会越来越小
    int e = 90;
    int f;
    NSLog(@"地址：%p ==== 地址：%p",&e,&f);
    
    
    
//    堆：
//    通过alloc,malloc,calloc等动态分配的空间 （地址是有低到高 ）
    
    //obj 地址为0x600002ded7e0
    NSObject *obj = [[NSObject alloc] init];
    //obj2 地址为0x600002ded7f0
    NSObject *obj2 = [[NSObject alloc] init];
    NSLog(@"地址=== %p   地址=== %@",obj,obj2);
    
    
    
    
}


@end
